#ifndef _CERRORHANDLINGSYSTEM_H_
#define _CERRORHANDLINGSYSTEM_H_

#include "IErrorHandlingSys.h"
#include "ILog.h"

class CErrorHandlingSys : public IErrorHandlingSys
{
public:
	static lvVoid Create(const lvString &cstrConfigurationFile);
private:
	CErrorHandlingSys(const lvString &cstrConfigurationFile);
	~CErrorHandlingSys();

	lvVoid _CriticalError(const lvString &cstrDescription, const lvInt ciSubSys_ID);
	lvVoid _Error(const lvString &cstrDescription, const lvInt ciSubSys_ID);
	lvVoid _Warning(const lvString &cstrDescription, const lvInt ciSubSys_ID);
	
	lvVoid _TraceMessage(const lvString &cstrMessage, const lvDword cdwColor);

	lvVoid _OperationExecuted(const lvString &cstrOperationName, const lvString &cstrFilename, const lvInt ciLine = 0);
	lvVoid _OperationExit(const lvDword cdwStatus);

	lvDword m_dwCritErrTxtColor;
	lvDword m_dwErrTxtColor;
	lvDword m_dwWarningTxtColor;
	lvDword m_dwDefTxtColor;

	ILog *m_arLogs[SUBSYSTEM_NUM];
};

#endif